Como implementar internacionalizacion en java para usar varios lenguajes en las cadenas de texto de una aplicación.
Partimos de un proyecto base generado con Maven, para utilizar la internacionalizacion usaremos el ResourceBundle.
Dentro de src/main creamos una carpeta resources y dentro de esta carpeta creamos dos archivos: WordList_en_US.properties y WordList_es_ES.properties
Dentro del archivo WordList_en_US.properties colocamos:
coche = car
casa = house
hola = hello
Dentro del archivo WordList_es_ES.properties colocamos:
coche = coche
casa = casa
hola = hola
NOTA: Se puede usar un archivo genérico para los idiomas no indicados, en este caso sería WordList.properties, pero siempre es mejor añadir todos los idiomas que vamos a utilizar en vez de usar uno genérico, ya que puede dar problemas.
Locale usLocale = new Locale("en", "US");
Locale esLocale = new Locale("es", "ES");
ResourceBundle words;
words = ResourceBundle.getBundle("WordList", esLocale);
System.out.println("Palabras en español:");
System.out.println(words.getString("coche"));
System.out.println(words.getString("casa"));
System.out.println(words.getString("hola"));
words = ResourceBundle.getBundle("WordList", usLocale);
System.out.println("\nPalabras en ingles:");
System.out.println(words.getString("coche"));
System.out.println(words.getString("casa"));
System.out.println(words.getString("hola"));
El código completo es el siguiente:
package com.example;
import java.util.Locale;
import java.util.ResourceBundle;
public class App
{
public static void main( String[] args )
{
Locale usLocale = new Locale("en", "US");
Locale esLocale = new Locale("es", "ES");
ResourceBundle words;
words = ResourceBundle.getBundle("WordList", esLocale);
System.out.println("Palabras en español:");
System.out.println(words.getString("coche"));
System.out.println(words.getString("casa"));
System.out.println(words.getString("hola"));
words = ResourceBundle.getBundle("WordList", usLocale);
System.out.println("\nPalabras en ingles:");
System.out.println(words.getString("coche"));
System.out.println(words.getString("casa"));
System.out.println(words.getString("hola"));
}
}
Y la salida es la siguiente:
Java | idiomas | internacionalizacion